static char *opt_subject;
static char *opt_body;
+static char *opt_parent;
static char *opt_branch;
static char *opt_statoverride_file;
static char **opt_metadata_strings;
}
static GOptionEntry options[] = {
+ { "parent", 0, 0, G_OPTION_ARG_STRING, &opt_parent, "Parent ref, or \"none\"", "REF" },
{ "subject", 's', 0, G_OPTION_ARG_STRING, &opt_subject, "One line subject", "SUBJECT" },
{ "body", 'm', 0, G_OPTION_ARG_STRING, &opt_body, "Full description", "BODY" },
{ "branch", 'b', 0, G_OPTION_ARG_STRING, &opt_branch, "Branch", "BRANCH" },
modifier = ostree_repo_commit_modifier_new (flags, commit_filter, mode_adds, NULL);
}
- if (!ostree_repo_resolve_rev (repo, opt_branch, TRUE, &parent, error))
- goto out;
+ if (opt_parent)
+ {
+ if (g_str_equal (opt_parent, "none"))
+ parent = NULL;
+ else
+ {
+ if (!ostree_validate_checksum_string (opt_parent, error))
+ goto out;
+ parent = g_strdup (opt_parent);
+ }
+ }
+ else
+ {
+ if (!ostree_repo_resolve_rev (repo, opt_branch, TRUE, &parent, error))
+ goto out;
+ }
if (!opt_subject && !opt_body)
{
set -euo pipefail
-echo "1..50"
+echo "1..52"
$OSTREE checkout test2 checkout-test2
echo "ok checkout"
assert_file_has_content four '4'
echo "ok cwd contents"
+cd ${test_tmpdir}
+$OSTREE commit -b test2-no-parent -s '' $test_tmpdir/checkout-test2-4
+assert_streq $($OSTREE log test2-no-parent |grep '^commit' | wc -l) "1"
+$OSTREE commit -b test2-no-parent -s '' --parent=none $test_tmpdir/checkout-test2-4
+assert_streq $($OSTREE log test2-no-parent |grep '^commit' | wc -l) "1"
+echo "ok commit no parent"
+
+cd ${test_tmpdir}
+$OSTREE commit -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
+$OSTREE commit -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
+$OSTREE commit -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
+assert_streq $($OSTREE log test2-custom-parent |grep '^commit' | wc -l) "3"
+prevparent=$($OSTREE rev-parse test2-custom-parent^)
+$OSTREE commit -b test2-custom-parent -s '' --parent=${prevparent} $test_tmpdir/checkout-test2-4
+assert_streq $($OSTREE log test2-custom-parent |grep '^commit' | wc -l) "3"
+echo "ok commit custom parent"
+
cd ${test_tmpdir}
$OSTREE diff test2^ test2 > diff-test2
assert_file_has_content diff-test2 'D */a/5'